home *** CD-ROM | disk | FTP | other *** search
- /*
- * CKIPCT.REXX
- *
- * This program is a de-boo'er for the Amiga, written in Amiga REXX. It is
- * intended for use as a decoder for a BOO file of Amiga Kermit.
- *
- * Written by Stephen Walton, 20 October 1990. Based on MSBPCT.C
- *
- */
-
- parse arg InName
- if InName = '' then do
- say 'usage: rx ckipct boo-file'
- exit 10
- end
-
- if ~open(InFile,InName,'Read') then do
- say 'Can''t open file' InName
- exit 10
- end
-
- OutName = readln(InFile)
- if Outname = '' then do
- say 'Illegal BOO file'
- exit
- end
-
- call open OutFile, OutName,'Write'
-
- say 'Creating file' OutName 'from input BOO file' InName
-
- NULLCHAR = fixchar('~')
- line = readln(InFile)
-
- do while ~eof(InFile)
- do while length(line) >= 2
- if fixchar(left(line,1)) = NULLCHAR then do /* Handle null compress */
- line = substr(line,2)
- do fixchar(left(line,1)) /* For repeat count... */
- call writech(OutFile,d2c(0)) /* ...output nulls */
- end
- line = substr(line,2) /* Trim off output count */
- end
- else do /* Decode a quad */
- a = fixchar(left(line,1))
- b = fixchar(substr(line,2,1))
- c = fixchar(substr(line,3,1))
- d = fixchar(substr(line,4,1))
- call writech(OutFile,d2c(((a*4) + (b%16))//256))
- call writech(OutFile,d2c(((b*16) + int(c/4))//256))
- call writech(OutFile,d2c((c*64 + d)//256))
- line = substr(line,5) /* Trim off the quad */
- end
- end
- line = readln(InFile)
- end
-
- call close(InFile)
- call close(OutFile)
- exit
-
- fixchar: procedure
- parse arg c
-
- return c2d(c) - c2d('0')
-